Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Salve a tutti, in questi giorni sto implementando un paio di cose al mio piccolo Kernel, ed una di queste è la gestione degli input da Tastiera, con inportb(0x60), e ho un problema!
Non riesco a capire dove si trovano i codici di scancode!
Cioè sono riuscito a trovare quelli per la "a, z, j, m", ma gli altri? Ho tentato anche di usare "showkey --a" per vedere i codici usati da Ubuntu, ma usando i suoi codici non esce nulla!
Esempio:
- Codice che funziona: 44 = z
- Codice di ubuntu(non funziona): 122 = z
Ecco il mio codice:
Codice sorgente - presumibilmente C/C++
while(1) /* qui metterei while(!(inportb(0x60) == Tasto_Enter)), ditemi se sbaglio */
{
if (inportb (0x60) == 44)
cout("z");
}
Grazie per il vs. aiuto!
Ultima modifica effettuata da LittleHacker il 26/02/2013 alle 18:56
La gestione dello scancode deve poi passare da una tabella di conversione per assegnare ad ogni codice il corretto carattere ASCII associato al layout di tastiera.
La gestione dello scancode deve poi passare da una tabella di conversione per assegnare ad ogni codice il corretto carattere ASCII associato al layout di tastiera.
Ok, grazie!
Ho scritto troppo in fretta RISOLTO
Ho un altro problema, cioè con quel codice, se pigio "a" e poi "invio", a schermo si visualizzano 50 "a" al posto di 1! Non è un problema dell'strcat, allora ho fatto così, sotto il while ho messo un if con:
Codice sorgente - presumibilmente C/C++
if (inportb(0x60) & 128) == 128)
{
//Pulsante rilasciato, faccio tutti i miei if
}
Ma usando questo codice fa fatica a captarmi il pulsante, cioè se premo 3 volte "a", lui me ne scrive soltanto una!
Come posso fare per farmi riconoscere bene gli input?
Un'altra domanda, come faccio a scrivere direttamente a video le lettere, senza dover prima pigare INVIO?
Grazie ancora
Edit:
Il problema delle troppe lettere ho risolto usando questo codice:
Codice sorgente - presumibilmente C/C++
while(KEY != KEY_ENTER)
{
if ((KEY & 128) == 0)
{
//Faccio i miei controlli
}
while((KEY & 128) == 0);
}
Però per la feature "scrivere direttamente a video le lettere", non so cosa fare! Però ho letto che usando questo codice, la CPU resta occupata e può fare solo quello, giusto? Potete darmi una mano?
Grazie
Ultima modifica effettuata da LittleHacker il 03/03/2013 alle 17:21